import { getToken } from "./authon";
const baseUrl = "http://47.120.49.37:8080"
// const baseUrl = "http://192.168.100.230:8080"
export function getBaseUrl(){
	return baseUrl;
}
function service(options={}){
	options.url = getBaseUrl()+options.url
	options.header = {
		'content-type': 'application/json',
		...options.header,
	}
	
	// token 校验等
	if (uni.getStorageSync("token")) {
		options.header['Authorization'] = `${uni.getStorageSync("token")}`
	} else {
		if(!options.url.includes("/login")){
			
		}
	}
	
	options.url = options.url.trim();
	// 请求数据处理
	if (['GET', "get"].includes(options.method) && options.params) {
		let data = options.params
		if (!options.data) {
			options.data = {}
		}
		options.data = {
			...options.data,
			...data,
		}
	} else if (['POST', "post"].includes(options.method) && options.params) {
		let keys = Object.keys(options.params)
		if (keys.length > 0) {
			let temp = '&'
			if (options.url.indexOf('?') == -1) {
				temp = "?"
			}
			keys.forEach(item => {
				temp = temp + `${item}=${options.params[item]}&`
			})
			temp = temp.substring(0, temp.length - 1)
			options.url = options.url + temp
		}
	}
	
	// 返回一个promise
	return new Promise((resolved,rejected)=>{
		// 请求成功回调
		options.success = (res) => {
			// 这里可以根据响应结果进行一些操作，比如身份过期，404等一些状态的处理
			// 这里不要操作数据，一般做一些页面流程或逻辑处理
			if (res.statusCode === 401) { // 比如token过期，我们可以重定向页面到登录或首页之类的
				uni.redirectTo({
					url: "/pages/index/index"
				})
				// 记得改变promise状态
				rejected(res)
			}
			// 这里一定要记得写(无论有没有操作，这里都必写)
			resolved(res.data)
		}
		// 请求失败回调
		options.fail = (err) => {
			rejected(err);
		};
		// 最后是正式发起请求
		uni.request(options);
	})

}

// 记得把函数暴露出去
export default service;